package com.leyou.api;

import com.leyou.domain.db1entity.TableCell;
import com.leyou.domain.db3entity.Prscard;
import com.leyou.domain.vo.StartTurnVO;
import com.leyou.domain.vo.TurnRecordVO;
import com.leyou.domain.vo.TurnTableActivityInfoVO;

/**
 * @Author lixin
 * @Date 2018/11/21 17:58
 * @Version 1.0
 * @Description TODO
 **/
public interface TurnService {

    /**
     * @param activityKey
     * @return com.leyou.domain.vo.TurnTableActivityInfoVO
     * @author lixin
     * @date 16:37 2018/11/22 0022
     * @description 获取转盘活动的所有信息
     **/
    TurnTableActivityInfoVO getTurnTableActivityInfoVO(String activityKey);


    /**
     * @param userId
     * @return java.lang.Integer
     * @author lixin
     * @date 16:37 2018/11/22 0022
     * @description 根据userId查询卡号
     **/
    String getCardNumByUserId(String userId);


    /**
     * @param tableCell
     * @return boolean
     * @author lixin
     * @date 16:41 2018/11/22 0022
     * @description 验证当前随机到的奖项是否可以被领取
     **/
    boolean isPrizeAvaiable(TableCell tableCell, String activityKey);


    /**
     * @param activityKey
     * @return com.leyou.domain.db1entity.TableCell
     * @author lixin
     * @date 18:28 2018/11/22 0022
     * @description 得到一个没有次数限制的奖项
     **/
    TableCell getAvailableTableCell(String activityKey);


    /**
     * @param prize
     * @param startTurnVO
     * @param cardNum
     * @return void
     * @author lixin
     * @date 18:38 2018/11/22 0022
     * @description 发奖
     **/
    void sendPrize(TableCell prize, StartTurnVO startTurnVO, String cardNum, TurnTableActivityInfoVO turnTableActivityInfoVO);


    /**
     * @param turnRecordVO
     * @return void
     * @author lixin
     * @date 11:04 2018/11/27 0027
     * @description 转盘抽奖产生记录
     **/
    void putTableRecord(TurnRecordVO turnRecordVO);


    /**
     * @param turnTableActivityInfoVO
     * @param userId
     * @return int
     * @author lixin
     * @date 15:08 2018/11/27 0027
     * @description 查询当前用户在一定时间内买了商品列表的价格价钱总数
     **/
    int getTotalCostInItemListByUserId(TurnTableActivityInfoVO turnTableActivityInfoVO, Integer userId);


    /**
     * @param startTurnVO
     * @return int
     * @author lixin
     * @date 16:16 2018/11/28 0028
     * @description 查询当前用户已经参与当前活动次数
     **/
    int getActivityTryCountByUserId(StartTurnVO startTurnVO);


    Prscard selectUser(String username, String password);

}
